namespace ext
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// A basic tab container. TabPanels can be used exactly like a standard {@link Ext.Panel}
	/// for layout purposes, but also have special support for containing child Components
	/// ({@link Ext.Container#items items}) that are managed using a
	/// {@link Ext.layout.CardLayout CardLayout layout manager}, and displayed as separate tabs. Note: By default, a tab&apos;s close tool destroys the child tab Component
	/// and all its descendants. This makes the child tab Component, and all its descendants unusable. To enable
	/// re-use of a tab, configure the TabPanel with {@link #autoDestroy autoDestroy: false}.
	///
	/// TabPanel header/footer elements  TabPanels use their {@link Ext.Panel#header header} or {@link Ext.Panel#footer footer} element
	/// (depending on the {@link #tabPosition} configuration) to accommodate the tab selector buttons.
	/// This means that a TabPanel will not display any configured title, and will not display any
	/// configured header {@link Ext.Panel#tools tools}.  To display a header, embed the...
	/// </summary>
	/// <htmlSummary>
	/// &lt;p&gt;A basic tab container. TabPanels can be used exactly like a standard {@link Ext.Panel}
	/// for layout purposes, but also have special support for containing child Components
	/// (&lt;tt&gt;{@link Ext.Container#items items}&lt;/tt&gt;) that are managed using a
	/// {@link Ext.layout.CardLayout CardLayout layout manager}, and displayed as separate tabs.&lt;/p&gt;
	///
	/// &lt;b&gt;Note:&lt;/b&gt; By default, a tab&apos;s close tool &lt;i&gt;destroys&lt;/i&gt; the child tab Component
	/// and all its descendants. This makes the child tab Component, and all its descendants &lt;b&gt;unusable&lt;/b&gt;. To enable
	/// re-use of a tab, configure the TabPanel with &lt;b&gt;&lt;code&gt;{@link #autoDestroy autoDestroy: false}&lt;/code&gt;&lt;/b&gt;.
	///
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;TabPanel header/footer elements&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	/// &lt;p&gt;TabPanels use their {@link Ext.Panel#header header} or {@link Ext.Panel#footer footer} element
	/// (depending on the {@link #tabPosition} configuration) to accommodate the tab selector buttons.
	/// This means that a TabPanel will not display any configured title, and will not display any
	/// configured header {@link Ext.Panel#tools tools}.&lt;/p&gt;
	/// &lt;p&gt;To display a header, embed the TabPanel in a {@link Ext.Panel Panel} which uses
	/// &lt;b&gt;&lt;tt&gt;{@link Ext.Container#layout layout:&apos;fit&apos;}&lt;/tt&gt;&lt;/b&gt;.&lt;/p&gt;
	///
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Tab Events&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	/// &lt;p&gt;There is no actual tab class &amp;mdash; each tab is simply a {@link Ext.BoxComponent Component}
	/// such as a {@link Ext.Panel Panel}. However, when rendered in a TabPanel, each child Component
	/// can fire additional events that only exist for tabs and are not available from other Components.
	/// These events are:&lt;/p&gt;
	/// &lt;div&gt;&lt;ul class=&quot;mdetail-params&quot;&gt;
	/// &lt;li&gt;&lt;tt&gt;&lt;b&gt;{@link Ext.Panel#activate activate}&lt;/b&gt;&lt;/tt&gt; : Fires when this Component becomes
	/// the active tab.&lt;/li&gt;
	/// &lt;li&gt;&lt;tt&gt;&lt;b&gt;{@link Ext.Panel#deactivate deactivate}&lt;/b&gt;&lt;/tt&gt; : Fires when the Component that
	/// was the active tab becomes deactivated.&lt;/li&gt;
	/// &lt;li&gt;&lt;tt&gt;&lt;b&gt;{@link Ext.Panel#beforeclose beforeclose}&lt;/b&gt;&lt;/tt&gt; : Fires when the user clicks on the close tool of a closeable tab.
	/// May be vetoed by returning &lt;code&gt;false&lt;/code&gt; from a handler.&lt;/li&gt;
	/// &lt;li&gt;&lt;tt&gt;&lt;b&gt;{@link Ext.Panel#close close}&lt;/b&gt;&lt;/tt&gt; : Fires a closeable tab has been closed by the user.&lt;/li&gt;
	/// &lt;/ul&gt;&lt;/div&gt;
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Creating TabPanels from Code&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	/// &lt;p&gt;TabPanels can be created and rendered completely in code, as in this example:&lt;/p&gt;
	/// &lt;pre&gt;&lt;code&gt;
	/// var tabs = new Ext.TabPanel({
	/// renderTo: Ext.getBody(),
	/// activeTab: 0,
	/// items: [{
	/// title: &apos;Tab 1&apos;,
	/// html: &apos;A simple tab&apos;
	/// },{
	/// title: &apos;Tab 2&apos;,
	/// html: &apos;Another one&apos;
	/// }]
	/// });
	/// &lt;/code&gt;&lt;/pre&gt;
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Creating TabPanels from Existing Markup&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	/// &lt;p&gt;TabPanels can also be rendered from pre-existing markup in a couple of ways.&lt;/p&gt;
	/// &lt;div&gt;&lt;ul class=&quot;mdetail-params&quot;&gt;
	///
	/// &lt;li&gt;Pre-Structured Markup&lt;/li&gt;
	/// &lt;div class=&quot;sub-desc&quot;&gt;
	/// &lt;p&gt;A container div with one or more nested tab divs with class &lt;tt&gt;&apos;x-tab&apos;&lt;/tt&gt; can be rendered entirely
	/// from existing markup (See the {@link #autoTabs} example).&lt;/p&gt;
	/// &lt;/div&gt;
	///
	/// &lt;li&gt;Un-Structured Markup&lt;/li&gt;
	/// &lt;div class=&quot;sub-desc&quot;&gt;
	/// &lt;p&gt;A TabPanel can also be rendered from markup that is not strictly structured by simply specifying by id
	/// which elements should be the container and the tabs. Using this method tab content can be pulled from different
	/// elements within the page by id regardless of page structure. For example:&lt;/p&gt;
	/// &lt;pre&gt;&lt;code&gt;
	/// var tabs = new Ext.TabPanel({
	/// renderTo: &apos;my-tabs&apos;,
	/// activeTab: 0,
	/// items:[
	/// {contentEl:&apos;tab1&apos;, title:&apos;Tab 1&apos;},
	/// {contentEl:&apos;tab2&apos;, title:&apos;Tab 2&apos;}
	/// ]
	/// });
	///
	/// // Note that the tabs do not have to be nested within the container (although they can be)
	/// &amp;lt;div id=&quot;my-tabs&quot;&gt;&amp;lt;/div&gt;
	/// &amp;lt;div id=&quot;tab1&quot; class=&quot;x-hide-display&quot;&gt;A simple tab&amp;lt;/div&gt;
	/// &amp;lt;div id=&quot;tab2&quot; class=&quot;x-hide-display&quot;&gt;Another one&amp;lt;/div&gt;
	/// &lt;/code&gt;&lt;/pre&gt;
	/// Note that the tab divs in this example contain the class &lt;tt&gt;&apos;x-hide-display&apos;&lt;/tt&gt; so that they can be rendered
	/// deferred without displaying outside the tabs. You could alternately set &lt;tt&gt;{@link #deferredRender} = false &lt;/tt&gt;
	/// to render all content tabs on page load.
	/// &lt;/div&gt;
	///
	/// &lt;/ul&gt;&lt;/div&gt;
	/// </htmlSummary>
	/// <definedin>src\widgets\TabPanel.js</definedin>
	[ScriptName("TabPanel")]
	[ScriptNamespace("Ext")]
	[Imported()]
	public partial class TabPanel : ext.Panel
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="config">The configuration options</param>
		public TabPanel(ext.TabPanel_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public TabPanel()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// Set to true to force a layout of the active tab when the tab is changed. Defaults to false.
		/// See {@link Ext.layout.CardLayout}.{@link Ext.layout.CardLayout#layoutOnCardChange layoutOnCardChange}.
		/// </summary>
		/// <htmlSummary>
		/// Set to true to force a layout of the active tab when the tab is changed. Defaults to false.
		/// See {@link Ext.layout.CardLayout}.&lt;code&gt;{@link Ext.layout.CardLayout#layoutOnCardChange layoutOnCardChange}&lt;/code&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("layoutOnTabChange")]
		public bool LayoutOnTabChange;
		
		/// <summary>
		/// This config option is used on child Components of ths TabPanel. A CSS
		/// class name applied to the tab strip item representing the child Component, allowing special
		/// styling to be applied.
		/// </summary>
		/// <htmlSummary>
		/// &lt;b&gt;This config option is used on &lt;u&gt;child Components&lt;/u&gt; of ths TabPanel.&lt;/b&gt; A CSS
		/// class name applied to the tab strip item representing the child Component, allowing special
		/// styling to be applied.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("tabCls")]
		public string TabCls;
		
		/// <summary>
		/// true by default to defer the rendering of child {@link Ext.Container#items items}
		/// to the browsers DOM until a tab is activated. false will render all contained
		/// {@link Ext.Container#items items} as soon as the {@link Ext.layout.CardLayout layout}
		/// is rendered. If there is a significant amount of content or a lot of heavy controls being
		/// rendered into panels that are not displayed by default, setting this to true might
		/// improve performance.
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;&lt;tt&gt;true&lt;/tt&gt; by default to defer the rendering of child &lt;tt&gt;{@link Ext.Container#items items}&lt;/tt&gt;
		/// to the browsers DOM until a tab is activated. &lt;tt&gt;false&lt;/tt&gt; will render all contained
		/// &lt;tt&gt;{@link Ext.Container#items items}&lt;/tt&gt; as soon as the {@link Ext.layout.CardLayout layout}
		/// is rendered. If there is a significant amount of content or a lot of heavy controls being
		/// rendered into panels that are not displayed by default, setting this to &lt;tt&gt;true&lt;/tt&gt; might
		/// improve performance.&lt;/p&gt;
		/// &lt;br&gt;&lt;p&gt;The &lt;tt&gt;deferredRender&lt;/tt&gt; property is internally passed to the layout manager for
		/// TabPanels ({@link Ext.layout.CardLayout}) as its {@link Ext.layout.CardLayout#deferredRender}
		/// configuration value.&lt;/p&gt;
		/// &lt;br&gt;&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: leaving &lt;tt&gt;deferredRender&lt;/tt&gt; as &lt;tt&gt;true&lt;/tt&gt; means that the content
		/// within an unactivated tab will not be available. For example, this means that if the TabPanel
		/// is within a {@link Ext.form.FormPanel form}, then until a tab is activated, any Fields within
		/// unactivated tabs will not be rendered, and will therefore not be submitted and will not be
		/// available to either {@link Ext.form.BasicForm#getValues getValues} or
		/// {@link Ext.form.BasicForm#setValues setValues}.&lt;/p&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("deferredRender")]
		public bool DeferredRender;
		
		/// <summary>The initial width in pixels of each new tab (defaults to 120).</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("tabWidth")]
		public System.Number TabWidth;
		
		/// <summary>The minimum width in pixels for each tab when {@link #resizeTabs} = true (defaults to 30).</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("minTabWidth")]
		public System.Number MinTabWidth;
		
		/// <summary>
		/// True to automatically resize each tab so that the tabs will completely fill the
		/// tab strip (defaults to false). Setting this to true may cause specific widths that might be set per tab to
		/// be overridden in order to fit them all into view (although {@link #minTabWidth} will always be honored).
		/// </summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("resizeTabs")]
		public bool ResizeTabs;
		
		/// <summary>
		/// True to enable scrolling to tabs that may be invisible due to overflowing the
		/// overall TabPanel width. Only available with tabPosition:&apos;top&apos; (defaults to false).
		/// </summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("enableTabScroll")]
		public bool EnableTabScroll;
		
		/// <summary>
		/// The number of pixels to scroll each time a tab scroll button is pressed
		/// (defaults to 100, or if {@link #resizeTabs} = true, the calculated tab width). Only
		/// applies when {@link #enableTabScroll} = true.
		/// </summary>
		/// <htmlSummary>
		/// The number of pixels to scroll each time a tab scroll button is pressed
		/// (defaults to &lt;tt&gt;100&lt;/tt&gt;, or if &lt;tt&gt;{@link #resizeTabs} = true&lt;/tt&gt;, the calculated tab width). Only
		/// applies when &lt;tt&gt;{@link #enableTabScroll} = true&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("scrollIncrement")]
		public System.Number ScrollIncrement;
		
		/// <summary>
		/// Number of milliseconds between each scroll while a tab scroll button is
		/// continuously pressed (defaults to 400).
		/// </summary>
		/// <htmlSummary>
		/// Number of milliseconds between each scroll while a tab scroll button is
		/// continuously pressed (defaults to &lt;tt&gt;400&lt;/tt&gt;).
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("scrollRepeatInterval")]
		public System.Number ScrollRepeatInterval;
		
		/// <summary>
		/// The number of milliseconds that each scroll animation should last (defaults
		/// to .35). Only applies when {@link #animScroll} = true.
		/// </summary>
		/// <htmlSummary>
		/// The number of milliseconds that each scroll animation should last (defaults
		/// to &lt;tt&gt;.35&lt;/tt&gt;). Only applies when &lt;tt&gt;{@link #animScroll} = true&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("scrollDuration")]
		public float ScrollDuration;
		
		/// <summary>
		/// True to animate tab scrolling so that hidden tabs slide smoothly into view (defaults
		/// to true). Only applies when {@link #enableTabScroll} = true.
		/// </summary>
		/// <htmlSummary>
		/// True to animate tab scrolling so that hidden tabs slide smoothly into view (defaults
		/// to &lt;tt&gt;true&lt;/tt&gt;). Only applies when &lt;tt&gt;{@link #enableTabScroll} = true&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("animScroll")]
		public bool AnimScroll;
		
		/// <summary>
		/// The position where the tab strip should be rendered (defaults to &apos;top&apos;).
		/// The only other supported value is &apos;bottom&apos;. Note: tab scrolling is only supported for
		/// tabPosition: &apos;top&apos;.
		/// </summary>
		/// <htmlSummary>
		/// The position where the tab strip should be rendered (defaults to &lt;tt&gt;&apos;top&apos;&lt;/tt&gt;).
		/// The only other supported value is &lt;tt&gt;&apos;bottom&apos;&lt;/tt&gt;. &lt;b&gt;Note&lt;/b&gt;: tab scrolling is only supported for
		/// &lt;tt&gt;tabPosition: &apos;top&apos;&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("tabPosition")]
		public string TabPosition;
		
		/// <summary>The base CSS class applied to the panel (defaults to &apos;x-tab-panel&apos;).</summary>
		/// <htmlSummary>The base CSS class applied to the panel (defaults to &lt;tt&gt;&apos;x-tab-panel&apos;&lt;/tt&gt;).</htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("baseCls")]
		public string BaseCls;
		
		/// <summary>
		/// true to query the DOM for any divs with a class of &apos;x-tab&apos; to be automatically converted
		/// to tabs and added to this panel (defaults to false). Note that the query will be executed within
		/// the scope of the container element only (so that multiple tab panels from markup can be supported via this
		/// method).  This method is only possible when the markup is structured correctly as a container with nested divs
		/// containing the class &apos;x-tab&apos;. To create TabPanels without these limitations, or to pull tab content
		/// from other elements on the page, see the example at the top of the class for generating tabs from markup.  There are a couple of things to note when using this method:  When using the autoTabs config (as opposed to passing individual tab configs in the TabPanel&apos;s
		/// {@link #items} collection), you must use {@link #applyTo} to correctly use the specified id
		/// as the tab container. The autoTabs method replaces existing content with the TabPanel
		/// components.  Make sure that you set...
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;&lt;tt&gt;true&lt;/tt&gt; to query the DOM for any divs with a class of &apos;x-tab&apos; to be automatically converted
		/// to tabs and added to this panel (defaults to &lt;tt&gt;false&lt;/tt&gt;). Note that the query will be executed within
		/// the scope of the container element only (so that multiple tab panels from markup can be supported via this
		/// method).&lt;/p&gt;
		/// &lt;p&gt;This method is only possible when the markup is structured correctly as a container with nested divs
		/// containing the class &lt;tt&gt;&apos;x-tab&apos;&lt;/tt&gt;. To create TabPanels without these limitations, or to pull tab content
		/// from other elements on the page, see the example at the top of the class for generating tabs from markup.&lt;/p&gt;
		/// &lt;p&gt;There are a couple of things to note when using this method:&lt;ul&gt;
		/// &lt;li&gt;When using the &lt;tt&gt;autoTabs&lt;/tt&gt; config (as opposed to passing individual tab configs in the TabPanel&apos;s
		/// {@link #items} collection), you must use &lt;tt&gt;{@link #applyTo}&lt;/tt&gt; to correctly use the specified &lt;tt&gt;id&lt;/tt&gt;
		/// as the tab container. The &lt;tt&gt;autoTabs&lt;/tt&gt; method &lt;em&gt;replaces&lt;/em&gt; existing content with the TabPanel
		/// components.&lt;/li&gt;
		/// &lt;li&gt;Make sure that you set &lt;tt&gt;{@link #deferredRender}: false&lt;/tt&gt; so that the content elements for each
		/// tab will be rendered into the TabPanel immediately upon page load, otherwise they will not be transformed
		/// until each tab is activated and will be visible outside the TabPanel.&lt;/li&gt;
		/// &lt;/ul&gt;Example usage:&lt;/p&gt;
		/// &lt;pre&gt;&lt;code&gt;
		/// var tabs = new Ext.TabPanel({
		/// applyTo: &apos;my-tabs&apos;,
		/// activeTab: 0,
		/// deferredRender: false,
		/// autoTabs: true
		/// });
		///
		/// // This markup will be converted to a TabPanel from the code above
		/// &amp;lt;div id=&quot;my-tabs&quot;&gt;
		/// &amp;lt;div class=&quot;x-tab&quot; title=&quot;Tab 1&quot;&gt;A simple tab&amp;lt;/div&gt;
		/// &amp;lt;div class=&quot;x-tab&quot; title=&quot;Tab 2&quot;&gt;Another one&amp;lt;/div&gt;
		/// &amp;lt;/div&gt;
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("autoTabs")]
		public bool AutoTabs;
		
		/// <summary>
		/// The CSS selector used to search for tabs in existing markup when
		/// {@link #autoTabs} = true (defaults to &apos;div.x-tab&apos;). This can be any valid selector
		/// supported by {@link Ext.DomQuery#select}. Note that the query will be executed within the scope of this
		/// tab panel only (so that multiple tab panels from markup can be supported on a page).
		/// </summary>
		/// <htmlSummary>
		/// The CSS selector used to search for tabs in existing markup when
		/// &lt;tt&gt;{@link #autoTabs} = true&lt;/tt&gt; (defaults to &lt;tt&gt;&apos;div.x-tab&apos;&lt;/tt&gt;). This can be any valid selector
		/// supported by {@link Ext.DomQuery#select}. Note that the query will be executed within the scope of this
		/// tab panel only (so that multiple tab panels from markup can be supported on a page).
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("autoTabSelector")]
		public string AutoTabSelector;
		
		/// <summary>
		/// A string id or the numeric index of the tab that should be initially
		/// activated on render (defaults to undefined).
		/// </summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("activeTab")]
		public ext.auto.System_String_Or_System_Number ActiveTab;
		
		/// <summary>
		/// The number of pixels of space to calculate into the sizing and scrolling of
		/// tabs. If you change the margin in CSS, you will need to update this value so calculations are correct
		/// with either {@link #resizeTabs} or scrolling tabs. (defaults to 2)
		/// </summary>
		/// <htmlSummary>
		/// The number of pixels of space to calculate into the sizing and scrolling of
		/// tabs. If you change the margin in CSS, you will need to update this value so calculations are correct
		/// with either &lt;tt&gt;{@link #resizeTabs}&lt;/tt&gt; or scrolling tabs. (defaults to &lt;tt&gt;2&lt;/tt&gt;)
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("tabMargin")]
		public System.Number TabMargin;
		
		/// <summary>
		/// true to render the tab strip without a background container image
		/// (defaults to false).
		/// </summary>
		/// <htmlSummary>
		/// &lt;/tt&gt;true&lt;/tt&gt; to render the tab strip without a background container image
		/// (defaults to &lt;tt&gt;false&lt;/tt&gt;).
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("plain")]
		public bool Plain;
		
		/// <summary>
		/// For scrolling tabs, the number of pixels to increment on mouse wheel
		/// scrolling (defaults to 20).
		/// </summary>
		/// <htmlSummary>
		/// For scrolling tabs, the number of pixels to increment on mouse wheel
		/// scrolling (defaults to &lt;tt&gt;20&lt;/tt&gt;).
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("wheelIncrement")]
		public System.Number WheelIncrement;
		
		/// <summary>Fires before the active tab changes. Handlers can return false to cancel the tab change.</summary>
		/// <htmlSummary>Fires before the active tab changes. Handlers can &lt;tt&gt;return false&lt;/tt&gt; to cancel the tab change.</htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("beforetabchangeEventName")]
		public const string BeforetabchangeEventName = "beforetabchange";
		
		/// <summary>Fires after the active tab has changed.</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("tabchangeEventName")]
		public const string TabchangeEventName = "tabchange";
		
		/// <summary>Relays the contextmenu event from a tab selector element in the tab strip.</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("contextmenuEventName")]
		public const string ContextmenuEventName = "contextmenu";
		
		/// <summary>
		/// TabPanel implicitly uses {@link Ext.layout.CardLayout} as its layout manager.
		/// layoutConfig may be used to configure this layout manager.
		/// {@link #deferredRender} and {@link #layoutOnTabChange}
		/// configured on the TabPanel will be applied as configs to the layout manager.
		/// </summary>
		/// <htmlSummary>
		/// TabPanel implicitly uses {@link Ext.layout.CardLayout} as its layout manager.
		/// &lt;code&gt;layoutConfig&lt;/code&gt; may be used to configure this layout manager.
		/// &lt;code&gt;{@link #deferredRender}&lt;/code&gt; and &lt;code&gt;{@link #layoutOnTabChange}&lt;/code&gt;
		/// configured on the TabPanel will be applied as configs to the layout manager.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("layoutConfig")]
		public object LayoutConfig;
		
		/// <summary>
		/// A {@link Ext.Template Template} or
		/// {@link Ext.XTemplate XTemplate} which may be provided to process the data object returned from
		/// {@link #getTemplateArgs} to produce a clickable selector element in the tab strip. The main element created should be a &amp;lt;li&gt; element. In order for a click event on
		/// a selector element to be connected to its item, it must take its id from the TabPanel&apos;s
		/// native {@link #getTemplateArgs}.  The child element which contains the title text must be marked by the CSS class
		/// x-tab-strip-inner.  To enable closability, the created element should contain an element marked by the CSS class
		/// x-tab-strip-close.  If a custom itemTpl is supplied, it is the developer&apos;s responsibility to create CSS
		/// style rules to create the desired appearance. 
		/// Below is an example of how to create customized tab selector items: 
		/// new Ext.TabPanel({
		/// renderTo: document.body,
		/// minTabWidth: 115,
		/// tabWidth: 135,
		/// enableTabScroll: true,
		/// width: 600,
		/// height: 250,
		/// defaults:...
		/// </summary>
		/// <htmlSummary>
		/// A {@link Ext.Template Template} or
		/// {@link Ext.XTemplate XTemplate} which may be provided to process the data object returned from
		/// &lt;tt&gt;{@link #getTemplateArgs}&lt;/tt&gt; to produce a clickable selector element in the tab strip.&lt;/p&gt;
		/// &lt;p&gt;The main element created should be a &lt;tt&gt;&amp;lt;li&gt;&lt;/tt&gt; element. In order for a click event on
		/// a selector element to be connected to its item, it must take its &lt;i&gt;id&lt;/i&gt; from the TabPanel&apos;s
		/// native &lt;tt&gt;{@link #getTemplateArgs}&lt;/tt&gt;.&lt;/p&gt;
		/// &lt;p&gt;The child element which contains the title text must be marked by the CSS class
		/// &lt;tt&gt;x-tab-strip-inner&lt;/tt&gt;.&lt;/p&gt;
		/// &lt;p&gt;To enable closability, the created element should contain an element marked by the CSS class
		/// &lt;tt&gt;x-tab-strip-close&lt;/tt&gt;.&lt;/p&gt;
		/// &lt;p&gt;If a custom &lt;tt&gt;itemTpl&lt;/tt&gt; is supplied, it is the developer&apos;s responsibility to create CSS
		/// style rules to create the desired appearance.&lt;/p&gt;
		/// Below is an example of how to create customized tab selector items:&lt;pre&gt;&lt;code&gt;
		/// new Ext.TabPanel({
		/// renderTo: document.body,
		/// minTabWidth: 115,
		/// tabWidth: 135,
		/// enableTabScroll: true,
		/// width: 600,
		/// height: 250,
		/// defaults: {autoScroll:true},
		/// itemTpl: new Ext.XTemplate(
		/// &apos;&amp;lt;li class=&quot;{cls}&quot; id=&quot;{id}&quot; style=&quot;overflow:hidden&quot;&gt;&apos;,
		/// &apos;&amp;lt;tpl if=&quot;closable&quot;&gt;&apos;,
		/// &apos;&amp;lt;a class=&quot;x-tab-strip-close&quot;&gt;&amp;lt;/a&gt;&apos;,
		/// &apos;&amp;lt;/tpl&gt;&apos;,
		/// &apos;&amp;lt;a class=&quot;x-tab-right&quot; href=&quot;#&quot; style=&quot;padding-left:6px&quot;&gt;&apos;,
		/// &apos;&amp;lt;em class=&quot;x-tab-left&quot;&gt;&apos;,
		/// &apos;&amp;lt;span class=&quot;x-tab-strip-inner&quot;&gt;&apos;,
		/// &apos;&amp;lt;img src=&quot;{src}&quot; style=&quot;float:left;margin:3px 3px 0 0&quot;&gt;&apos;,
		/// &apos;&amp;lt;span style=&quot;margin-left:20px&quot; class=&quot;x-tab-strip-text {iconCls}&quot;&gt;{text} {extra}&amp;lt;/span&gt;&apos;,
		/// &apos;&amp;lt;/span&gt;&apos;,
		/// &apos;&amp;lt;/em&gt;&apos;,
		/// &apos;&amp;lt;/a&gt;&apos;,
		/// &apos;&amp;lt;/li&gt;&apos;
		/// ),
		/// getTemplateArgs: function(item) {
		/// // Call the native method to collect the base data. Like the ID!
		/// var result = Ext.TabPanel.prototype.getTemplateArgs.call(this, item);
		///
		/// // Add stuff used in our template
		/// return Ext.apply(result, {
		/// closable: item.closable,
		/// src: item.iconSrc,
		/// extra: item.extraText || &apos;&apos;
		/// });
		/// },
		/// items: [{
		/// title: &apos;New Tab 1&apos;,
		/// iconSrc: &apos;../shared/icons/fam/grid.png&apos;,
		/// html: &apos;Tab Body 1&apos;,
		/// closable: true
		/// }, {
		/// title: &apos;New Tab 2&apos;,
		/// iconSrc: &apos;../shared/icons/fam/grid.png&apos;,
		/// html: &apos;Tab Body 2&apos;,
		/// extraText: &apos;Extra stuff in the tab button&apos;
		/// }]
		/// });
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <optional>Optional Field</optional>
		[ScriptName("itemTpl")]
		public ext.auto.ext_Template_Or_ext_XTemplate ItemTpl;
		
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("collapsible")]
		public bool Collapsible;
		
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("header")]
		public string Header;
		
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("headerAsText")]
		public bool HeaderAsText;
		
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("tools")]
		public System.Array Tools;
		
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("toolTemplate")]
		public System.Array ToolTemplate;
		
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("hideCollapseTool")]
		public bool HideCollapseTool;
		
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("titleCollapse")]
		public bool TitleCollapse;
		
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("collapsed")]
		public bool Collapsed;
		
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("layout")]
		public string Layout;
		
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("preventBodyReset")]
		public bool PreventBodyReset;
		#endregion
		
		#region Methods
		/// <summary>
		/// True to scan the markup in this tab panel for {@link #autoTabs} using the
		/// {@link #autoTabSelector}
		/// </summary>
		/// <htmlSummary>
		/// True to scan the markup in this tab panel for &lt;tt&gt;{@link #autoTabs}&lt;/tt&gt; using the
		/// &lt;tt&gt;{@link #autoTabSelector}&lt;/tt&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="removeExisting">True to remove existing tabs</param>
		[ScriptName("readTabs")]
		public void ReadTabs(bool removeExisting)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Provides template arguments for rendering a tab selector item in the tab strip.  This method returns an object hash containing properties used by the TabPanel&apos;s {@link #itemTpl}
		/// to create a formatted, clickable tab selector element. The properties which must be returned
		/// are:    id : String A unique identifier which links to the item   text : String The text to display   cls : String The CSS class name   iconCls : String A CSS class to provide appearance for an icon.
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;Provides template arguments for rendering a tab selector item in the tab strip.&lt;/p&gt;
		/// &lt;p&gt;This method returns an object hash containing properties used by the TabPanel&apos;s &lt;tt&gt;{@link #itemTpl}&lt;/tt&gt;
		/// to create a formatted, clickable tab selector element. The properties which must be returned
		/// are:&lt;/p&gt;&lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
		/// &lt;li&gt;&lt;b&gt;id&lt;/b&gt; : String&lt;div class=&quot;sub-desc&quot;&gt;A unique identifier which links to the item&lt;/div&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;text&lt;/b&gt; : String&lt;div class=&quot;sub-desc&quot;&gt;The text to display&lt;/div&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;cls&lt;/b&gt; : String&lt;div class=&quot;sub-desc&quot;&gt;The CSS class name&lt;/div&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;iconCls&lt;/b&gt; : String&lt;div class=&quot;sub-desc&quot;&gt;A CSS class to provide appearance for an icon.&lt;/div&gt;&lt;/li&gt;
		/// &lt;/ul&gt;&lt;/div&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="item">The {@link Ext.BoxComponent BoxComponent} for which to create a selector element in the tab strip.</param>
		/// <returns>An object hash containing the properties required to render the selector element.</returns>
		[ScriptName("getTemplateArgs")]
		public object GetTemplateArgs(ext.BoxComponent item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Suspends any internal calculations or scrolling while doing a bulk operation. See {@link #endUpdate}</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("beginUpdate")]
		public void BeginUpdate()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Resumes calculations and scrolling at the end of a bulk operation. See {@link #beginUpdate}</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("endUpdate")]
		public void EndUpdate()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Returns the Component which is the currently active tab. Note that before the TabPanel
		/// first activates a child Component, this method will return whatever was configured in the
		/// {@link #activeTab} config option.
		/// </summary>
		/// <htmlSummary>
		/// Returns the Component which is the currently active tab. &lt;b&gt;Note that before the TabPanel
		/// first activates a child Component, this method will return whatever was configured in the
		/// {@link #activeTab} config option.&lt;/b&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <returns>The currently active child Component if one &lt;i&gt;is&lt;/i&gt; active, or the {@link #activeTab} config value.</returns>
		[ScriptName("getActiveTab")]
		public ext.BoxComponent GetActiveTab()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Gets the specified tab by id.</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="id">The tab id</param>
		/// <returns>The tab</returns>
		[ScriptName("getItem")]
		public ext.Panel GetItem(string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Gets the DOM element for the tab strip item which activates the child panel with the specified
		/// ID. Access this to change the visual treatment of the item, for example by changing the CSS class name.
		/// </summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="tab">The tab component, or the tab&apos;s index, or the tabs id or itemId.</param>
		/// <returns>The DOM node</returns>
		[ScriptName("getTabEl")]
		public System.Html.Element GetTabEl(ext.Panel tab)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Gets the DOM element for the tab strip item which activates the child panel with the specified
		/// ID. Access this to change the visual treatment of the item, for example by changing the CSS class name.
		/// </summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="tab">The tab component, or the tab&apos;s index, or the tabs id or itemId.</param>
		/// <returns>The DOM node</returns>
		[ScriptName("getTabEl")]
		public System.Html.Element GetTabEl(System.Number tab)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Gets the DOM element for the tab strip item which activates the child panel with the specified
		/// ID. Access this to change the visual treatment of the item, for example by changing the CSS class name.
		/// </summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="tab">The tab component, or the tab&apos;s index, or the tabs id or itemId.</param>
		/// <returns>The DOM node</returns>
		[ScriptName("getTabEl")]
		public System.Html.Element GetTabEl(string tab)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Hides the tab strip item for the passed tab</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="item">The tab index, id or item</param>
		[ScriptName("hideTabStripItem")]
		public void HideTabStripItem(System.Number item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Hides the tab strip item for the passed tab</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="item">The tab index, id or item</param>
		[ScriptName("hideTabStripItem")]
		public void HideTabStripItem(string item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Hides the tab strip item for the passed tab</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="item">The tab index, id or item</param>
		[ScriptName("hideTabStripItem")]
		public void HideTabStripItem(ext.Panel item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Unhides the tab strip item for the passed tab</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="item">The tab index, id or item</param>
		[ScriptName("unhideTabStripItem")]
		public void UnhideTabStripItem(System.Number item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Unhides the tab strip item for the passed tab</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="item">The tab index, id or item</param>
		[ScriptName("unhideTabStripItem")]
		public void UnhideTabStripItem(string item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Unhides the tab strip item for the passed tab</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="item">The tab index, id or item</param>
		[ScriptName("unhideTabStripItem")]
		public void UnhideTabStripItem(ext.Panel item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Sets the specified tab as the active tab. This method fires the {@link #beforetabchange} event which
		/// can return false to cancel the tab change.
		/// </summary>
		/// <htmlSummary>
		/// Sets the specified tab as the active tab. This method fires the {@link #beforetabchange} event which
		/// can &lt;tt&gt;return false&lt;/tt&gt; to cancel the tab change.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="item">
		/// The id or tab Panel to activate. This parameter may be any of the following:
		/// &lt;div&gt;&lt;ul class=&quot;mdetail-params&quot;&gt;
		/// &lt;li&gt;a &lt;b&gt;&lt;tt&gt;String&lt;/tt&gt;&lt;/b&gt; : representing the <c>{@link Ext.Component#itemId itemId}</c>
		/// or <c>{@link Ext.Component#id id}</c> of the child component &lt;/li&gt;
		/// &lt;li&gt;a &lt;b&gt;&lt;tt&gt;Number&lt;/tt&gt;&lt;/b&gt; : representing the position of the child component
		/// within the <c>{@link Ext.Container#items items}</c> &lt;b&gt;property&lt;/b&gt;&lt;/li&gt;
		/// &lt;/ul&gt;&lt;/div&gt;
		/// &lt;p&gt;For additional information see {@link Ext.util.MixedCollection#get}.
		/// </param>
		[ScriptName("setActiveTab")]
		public void SetActiveTab(string item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Sets the specified tab as the active tab. This method fires the {@link #beforetabchange} event which
		/// can return false to cancel the tab change.
		/// </summary>
		/// <htmlSummary>
		/// Sets the specified tab as the active tab. This method fires the {@link #beforetabchange} event which
		/// can &lt;tt&gt;return false&lt;/tt&gt; to cancel the tab change.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="item">
		/// The id or tab Panel to activate. This parameter may be any of the following:
		/// &lt;div&gt;&lt;ul class=&quot;mdetail-params&quot;&gt;
		/// &lt;li&gt;a &lt;b&gt;&lt;tt&gt;String&lt;/tt&gt;&lt;/b&gt; : representing the <c>{@link Ext.Component#itemId itemId}</c>
		/// or <c>{@link Ext.Component#id id}</c> of the child component &lt;/li&gt;
		/// &lt;li&gt;a &lt;b&gt;&lt;tt&gt;Number&lt;/tt&gt;&lt;/b&gt; : representing the position of the child component
		/// within the <c>{@link Ext.Container#items items}</c> &lt;b&gt;property&lt;/b&gt;&lt;/li&gt;
		/// &lt;/ul&gt;&lt;/div&gt;
		/// &lt;p&gt;For additional information see {@link Ext.util.MixedCollection#get}.
		/// </param>
		[ScriptName("setActiveTab")]
		public void SetActiveTab(System.Number item)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// See {@link #setActiveTab}. Sets the specified tab as the active tab. This method fires
		/// the {@link #beforetabchange} event which can return false to cancel the tab change.
		/// </summary>
		/// <htmlSummary>
		/// See {@link #setActiveTab}. Sets the specified tab as the active tab. This method fires
		/// the {@link #beforetabchange} event which can &lt;tt&gt;return false&lt;/tt&gt; to cancel the tab change.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="tab">The id or tab Panel to activate</param>
		[ScriptName("activate")]
		public void Activate(string tab)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// See {@link #setActiveTab}. Sets the specified tab as the active tab. This method fires
		/// the {@link #beforetabchange} event which can return false to cancel the tab change.
		/// </summary>
		/// <htmlSummary>
		/// See {@link #setActiveTab}. Sets the specified tab as the active tab. This method fires
		/// the {@link #beforetabchange} event which can &lt;tt&gt;return false&lt;/tt&gt; to cancel the tab change.
		/// </htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		/// <param name="tab">The id or tab Panel to activate</param>
		[ScriptName("activate")]
		public void Activate(ext.Panel tab)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>Fires before the active tab changes. Handlers can return false to cancel the tab change.</summary>
		/// <htmlSummary>Fires before the active tab changes. Handlers can &lt;tt&gt;return false&lt;/tt&gt; to cancel the tab change.</htmlSummary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("beforetabchange")]
		public event ext.auto.Delegate_ext_TabPanel_And_ext_Panel_And_ext_Panel Beforetabchange;
		
		/// <summary>Fires after the active tab has changed.</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("tabchange")]
		public event ext.auto.Delegate_ext_TabPanel_And_ext_Panel Tabchange;
		
		/// <summary>Relays the contextmenu event from a tab selector element in the tab strip.</summary>
		/// <definedin>src\widgets\TabPanel.js</definedin>
		[ScriptName("contextmenu")]
		public event ext.auto.Delegate_ext_TabPanel_And_ext_Panel_And_ext_EventObject Contextmenu;
		#endregion
	}
}
